package com.sls.game.dao.enfu.impl;

import java.util.List;

import org.springframework.stereotype.Repository;

import com.sls.game.dao.enfu.EnfuGoodsDAO;
import com.sls.game.dao.impl.SuperDAO;
import com.sls.game.page.Pagination;
import com.sls.game.pojo.enfu.EnfuGoodsInfo;

/**
 * 
 * @description 恩付商品表--DAO
 * @author Wangxuegang
 * @date 2013-4-28
 */
@Repository("enfuGoodsDAO")
public class EnfuGoodsDAOImpl extends SuperDAO<EnfuGoodsInfo> implements
		EnfuGoodsDAO {

	/**
	 * 商品插入
	 * 
	 * @param enfuGoodsInfo
	 */
	@Override
	public void insert(EnfuGoodsInfo enfuGoodsInfo) {
		this.getSqlSession().insert("mybatis.xml.EnfuGoodsMapper.insert",
				enfuGoodsInfo);

	}

	/**
	 * 分页查询
	 * 
	 * @param enfuGoodsInfo
	 * @return
	 */
	@Override
	public Pagination<EnfuGoodsInfo> queryPaginationList(
			EnfuGoodsInfo enfuGoodsInfo) {
		Pagination<EnfuGoodsInfo> paginationList = null;
		int rowCount = queryRowCount(enfuGoodsInfo);
		enfuGoodsInfo.calculate();
		List<EnfuGoodsInfo> list = queryResultList(enfuGoodsInfo);
		paginationList = this.queryPagination(rowCount, list, enfuGoodsInfo);

		return paginationList;
	}

	/**
	 * 查询结果记录集
	 * 
	 * @param enfuGoodsInfo
	 * @return
	 */
	private List<EnfuGoodsInfo> queryResultList(EnfuGoodsInfo enfuGoodsInfo) {
		List<EnfuGoodsInfo> list = null;
		list = this.getSqlSession().selectList(
				"mybatis.xml.EnfuGoodsMapper.queryResultList", enfuGoodsInfo);
		return list;
	}

	/**
	 * 查询记录总数
	 * 
	 * @param enfuGoodsInfo
	 * @return
	 */
	private int queryRowCount(EnfuGoodsInfo enfuGoodsInfo) {
		int rowCount = 0;
		rowCount = this.getSqlSession().selectOne(
				"mybatis.xml.EnfuGoodsMapper.queryRowCount", enfuGoodsInfo);
		return rowCount;
	}

	/**
	 * 查询所有商品
	 * 
	 * @date 2012-12-01
	 * @return
	 */
	@Override
	public List<EnfuGoodsInfo> queryAllGoodsInfo(EnfuGoodsInfo enfuGoodsInfo) {
		List<EnfuGoodsInfo> list = null;
		list = this.getSqlSession().selectList(
				"mybatis.xml.EnfuGoodsMapper.queryAllGoodsInfo", enfuGoodsInfo);
		return list;
	}

	/**
	 * 修改审核状态
	 * 
	 * @param enfuGoodsInfo
	 */
	@Override
	public void updateState(EnfuGoodsInfo enfuGoodsInfo) {
		this.getSqlSession().update("mybatis.xml.EnfuGoodsMapper.updateState",
				enfuGoodsInfo);

	}

	/**
	 * 查询符合条件的商品编号
	 * 
	 * @param enfuGoodsInfo
	 * @return
	 */
	@Override
	public List<EnfuGoodsInfo> queryAllGoodsId(EnfuGoodsInfo enfuGoodsInfo) {
		List<EnfuGoodsInfo> list = null;
		list = this.getSqlSession().selectList(
				"mybatis.xml.EnfuGoodsMapper.queryAllGoodsId", enfuGoodsInfo);
		return list;
	}

	/**
	 * 查询所有商品编号
	 * 
	 * @return
	 */
	@Override
	public List<String> queryAllGoodsIdNoCondition() {
		List<String> goodsIdList = null;
		goodsIdList = this.getSqlSession().selectList(
				"mybatis.xml.EnfuGoodsMapper.queryAllGoodsIdNoCondition");
		return goodsIdList;
	}

	// ========================================================================
	/**
	 * 根据商品编号，单条记录查询
	 * 
	 * @param productid
	 *            恩付商品编号
	 */
	@Override
	public String queryByProductid(String productid) {
		String id = null;
		id = this.getSqlSession().selectOne(
				"mybatis.xml.EnfuGoodsMapper.queryByProductid", productid);

		return id;
	}

	/**
	 * 商品更新
	 * 
	 * @param enfuGoodsInfo
	 */
	@Override
	public void update(EnfuGoodsInfo enfuGoodsInfo) {
		this.getSqlSession().update("mybatis.xml.EnfuGoodsMapper.update",
				enfuGoodsInfo);

	}

	/**
	 * 根据商品编号、游戏名称、游戏编号，单条记录查询
	 * 
	 * @param productid
	 *            恩付商品编号
	 */
	// @Override
	// public String queryProductInfo(EnfuGoodsInfo enfuGoodsInfo) {
	// String id = null;
	// id = this.getSqlSession().selectOne(
	// "mybatis.xml.EnfuGoodsMapper.queryProductInfo", enfuGoodsInfo);
	//
	// return id;
	// }

	// ********************** 根据新文档开发 ******************************

	/**
	 * 根据productid值，查询记录
	 * 
	 * @param productid
	 * @return
	 */
	@Override
	public EnfuGoodsInfo queryEnfuGoodsInfoByProductid(String productid) {
		EnfuGoodsInfo info = null;
		info = this.getSqlSession().selectOne(
				"mybatis.xml.EnfuGoodsMapper.queryEnfuGoodsInfoByProductid",
				productid);
		return info;
	}

	/**
	 * 根据主键Id，查询记录
	 * 
	 * @param id
	 * @return
	 */
	@Override
	public EnfuGoodsInfo queryEnfuGoodsInfoById(String id) {
		EnfuGoodsInfo info = null;
		info = this.getSqlSession().selectOne(
				"mybatis.xml.EnfuGoodsMapper.queryEnfuGoodsInfoById", id);
		return info;
	}

}
